package com.itheima.health.service.impl;

import com.itheima.health.dao.CheckGroupDao;
import com.itheima.health.dao.CheckItemDao;
import com.itheima.health.dao.MemberDao;
import com.itheima.health.pojo.CheckGroup;
import com.itheima.health.pojo.CheckItem;
import com.itheima.health.pojo.Member;
import com.itheima.health.pojo.Setmeal;
import com.itheima.health.service.MemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;

/**
 * 会员SERVICE实现类
 */
@Service
@Slf4j
public class MemberServiceImpl implements MemberService {
    @Autowired
    private MemberDao memberDao;
    @Autowired
    private CheckItemDao checkItemDao;
    @Autowired
    private CheckGroupDao checkGroupDao;

//    //任务七：查询所有套餐
//    @Override
//    public List<Setmeal> findAllSetmeal() {
//        List<Setmeal> setmeals = memberDao.selectAll();
//        return setmeals;
//    }
//
//    //任务九查询套餐详情
//    @Override
//    public Setmeal findSetmealById(Integer id) {
//        //1.根据id得到一个setmeal对象
//        Setmeal setmeal = memberDao.selectById(id);
//        //2.查询关联表，得到套餐关联的检查组ids
//        List<Integer> checkGroupIds = memberDao.selectSetmealWithCheckGroupBySetmealId(id);
//        //3.新建一个集合,保存group的
//        ArrayList<CheckGroup> checkGroups = new ArrayList<>();
//        //4.遍历ids集合 根据id查找对应的group
//        for (Integer checkGroupId : checkGroupIds) {
//            CheckGroup checkGroup = checkGroupDao.selectById(checkGroupId);
//            //查询检查组合检查项关联的表，通过gruop的id 得到检查项的ids
//            List<Integer> checkItemIds = checkGroupDao.selectCheckItemIdsByCheckGroupId(checkGroup.getId());
//            //新建一个检查项集合，保存查到的检查项
//            ArrayList<CheckItem> checkItems = new ArrayList<>();
//            //遍历checkItemids集合，根据ID得到对应检查项
//            for (Integer checkItemId : checkItemIds) {
//                //根据id查找到对应的检查项对象
//                CheckItem checkItem = checkItemDao.selectById(checkItemId);
//                //将得到的检查项放入检查项集合add
//                checkItems.add(checkItem);
//            }
//            //for循环结束得到检查项的集合，将得到的检查项集合放入检查项对象set
//            checkGroup.setCheckItems(checkItems);
//            //将得到每一个检查组放入检查组集合
//            checkGroups.add(checkGroup);
//        }
//        //将得到的检查组集合放入套餐对象 set
//        setmeal.setCheckGroups(checkGroups);
//        return setmeal;
//    }

    @Override
    public Member findByTelephone(String telephone) {
        return memberDao.findByTelephone(telephone);
    }

    @Override
    public void save(Member member) {
        memberDao.save(member);
    }

    /* 更新会员 */
    @Override
    public void updateMember(Member member) {
        if (memberDao.updateMember(member) <= 0) {
            throw new RuntimeException("该会员不存在");
        }
    }
}
